ADO neco neni v poradku

Otázka od: Delphin

12. 9. 2002 2:43

D5 SP2, MS SQL 2000, W2000, ale dela to i v D6

Mam jedno ADOConnection a dve ADOQuery Query1 a Query2, obe jsou pripojene k
ADOConnection. Zjistil jsem, ze cas potrebny k otevreni Query2, je zavisly
na tom, zda se predtim otevrelo Query1.

ADOQuery1.open;
ADOQuery1.close;
ADOQuery2.open; //trva 20 sec vytizeni CPU < 10%

{ADOQuery1.open;
ADOQuery1.close;}
ADOQuery2.open; //trva 2 sec

ADOQuery1.open;
{ADOQuery1.close;}
ADOQuery2.open; //trva taky 20 sec

Kdyz se odpojim a pripojim znovu k serveru, tak se to spravi,
jenze tim zavru vsechny otevrene dotazy, coz nelze v praxi pouzit.

ADOQuery1.open;
ADOQuery1.close;
ADOConnection.connected:=false;
ADOConnection.connected:=true;
ADOQuery2.open; //trva 2 sec

Kdyz mam pro kazdy dotaz samostatne ADOConnection, tak to funguje, ale neni
to pochopitelne idealni.
Serverem to byt nemuze, predelavame starsi malou cast projektu z BDE na ADO
a v BDE to bezi v porovnani s ADO jako blesk.

Da se to nejak resit nebo se mam vratit k BDE ?

Diky

Delphin


Odpovedá: Zbysek Hlinka

12. 9. 2002 6:47

On 11 Sep 2002 at 16:11, Delphin wrote:

> ADOQuery1.open;
> {ADOQuery1.close;}
> ADOQuery2.open; //trva taky 20 sec
>
> Kdyz mam pro kazdy dotaz samostatne ADOConnection, tak to funguje, ale
> neni to pochopitelne idealni. Serverem to byt nemuze, predelavame
> starsi malou cast projektu z BDE na ADO a v BDE to bezi v porovnani s
> ADO jako blesk.
>
> Da se to nejak resit nebo se mam vratit k BDE ?

To rozhodne ne. Ale ADOQuery mi prijde jako nestastne reseni, protoze
je to tam spis pro rychly prechod z BDE nez pro rozumnou funkcnost.
Zkus to jeste predelat na ADODataSet, jestli to bude stejne.

S pozdravem

Zbysek Hlinka
E-mail: hlinka@hlinka.cz, localizator@localizator.com
Phone: +420 603 551 282

Odpovedá: Jan Sebelík

13. 9. 2002 6:34

> Odesílatel: Zbysek Hlinka <hlinka@hlinka.cz>
> To rozhodne ne. Ale ADOQuery mi prijde jako nestastne reseni, protoze
> je to tam spis pro rychly prechod z BDE nez pro rozumnou funkcnost.
> Zkus to jeste predelat na ADODataSet, jestli to bude stejne.

Myslim, ze se to netyka pouze ADO, podobne je to s IBQuery/IBDataSet a pod.

Uplne na hlavu postavene je to s SQLQuery/SQLDataset, protoze z TQuery (BDE) na
TSQLQuery (dbExpress) je prechod stejne (fakticky) nemozny. SQLQuery nelze
otevrit v gridu, nelze udelat Locate, Filter, ..., nelze editovat, ...

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: Delphin

12. 9. 2002 9:14

Predelal jsem to do ADODataSet a je to uplne stejne, zadna zmena, pokud mam
spolecne Connection pro oba Datasety, tak akce trva o 15 sec dele nez s BDE.
Zatim jsem to vyresil tak, ze v constructoru formulare vytvarim pro kazdou
databazovou komponentu vlastni ADOConnection a pak to beha stejne rychle
jako driv s BDE, ale prece to neni normalni ...

----- Original Message -----
From: "Zbysek Hlinka" <hlinka@hlinka.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, September 12, 2002 7:48 AM
Subject: Re: ADO neco neni v poradku


> On 11 Sep 2002 at 16:11, Delphin wrote:
>
> > ADOQuery1.open;
> > {ADOQuery1.close;}
> > ADOQuery2.open; //trva taky 20 sec
> >
> > Kdyz mam pro kazdy dotaz samostatne ADOConnection, tak to funguje, ale
> > neni to pochopitelne idealni. Serverem to byt nemuze, predelavame
> > starsi malou cast projektu z BDE na ADO a v BDE to bezi v porovnani s
> > ADO jako blesk.
> >
> > Da se to nejak resit nebo se mam vratit k BDE ?
>
> To rozhodne ne. Ale ADOQuery mi prijde jako nestastne reseni, protoze
> je to tam spis pro rychly prechod z BDE nez pro rozumnou funkcnost.
> Zkus to jeste predelat na ADODataSet, jestli to bude stejne.
>
> S pozdravem
>
> Zbysek Hlinka
> E-mail: hlinka@hlinka.cz, localizator@localizator.com
> Phone: +420 603 551 282
>
>

Odpovedá: Peter Surovy

12. 9. 2002 10:16

Ahoj

> a v BDE to bezi v porovnani s ADO jako blesk.
--no pokial Ti mozem so svojimi skromnymi skusenostami radit
tak toto je uplne jasna a normalna vec.
Nevyhoda BDE nie je v rychlosti spracovania ale
 v inych veciach(nebudem to tu menovat)

>
> Da se to nejak resit nebo se mam vratit k BDE ?
--- hmm no myslim ze s tou rychlostou sa da len
zmierit   a BDE uz dnes Borland nepodporuje
asi to nie je lahka otazka  

Peter

Odpovedá: Zbysek Hlinka

12. 9. 2002 21:58

On 12 Sep 2002 at 10:13, Delphin wrote:

> Predelal jsem to do ADODataSet a je to uplne stejne, zadna zmena,
> pokud mam spolecne Connection pro oba Datasety, tak akce trva o 15 sec
> dele nez s BDE. Zatim jsem to vyresil tak, ze v constructoru formulare
> vytvarim pro kazdou databazovou komponentu vlastni ADOConnection a pak
> to beha stejne rychle jako driv s BDE, ale prece to neni normalni ...

Hm, a jakou ze mas verzi Delphi? Ja vim, ze prvni ADOExpress nejakou
takovou chybu mel, ale dal jsem to uz nezkoumal. Kdyz jsem totez
udelal primo pres ADO, fungovalo to dobre.

S pozdravem

Zbysek Hlinka
E-mail: hlinka@hlinka.cz, localizator@localizator.com
Phone: +420 603 551 282

Odpovedá: Delphin

13. 9. 2002 13:11

> Hm, a jakou ze mas verzi Delphi? Ja vim, ze prvni ADOExpress nejakou
> takovou chybu mel, ale dal jsem to uz nezkoumal. Kdyz jsem totez
> udelal primo pres ADO, fungovalo to dobre.

D5 SP2, v D6 SP2 je to naprosto stejne, zkousel sem to.

Odpovedá: Zbysek Hlinka

13. 9. 2002 16:44

On 13 Sep 2002 at 10:40, Delphin wrote:

> > Hm, a jakou ze mas verzi Delphi? Ja vim, ze prvni ADOExpress nejakou
> > takovou chybu mel, ale dal jsem to uz nezkoumal. Kdyz jsem totez
> > udelal primo pres ADO, fungovalo to dobre.
>
> D5 SP2, v D6 SP2 je to naprosto stejne, zkousel sem to.

Takze chyba se asi tahne. Podobne veci jsem zkousel primo pres ADO, a
na tento problem jsem nenarazil. Zkus tedy zahybat s vlastnostmi,
ktere se tykaji pripojeni.

S pozdravem

Zbysek Hlinka
E-mail: hlinka@hlinka.cz, localizator@localizator.com
Phone: +420 603 551 282